www.gusucode.com > VC++ 酒店管理系统-源码程序 > VC++ 酒店管理系统-源码程序/code/hotel2003/MainFrm.cpp
//Download by http://www.NewXing.com // MainFrm.cpp : implementation of the CMainFrame class // #include "stdafx.h" #include "QQ.h" #include "QQView.h" #include "MainFrm.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #include <mmsystem.h> #define WM_ICON_NOTIFY WM_USER+10 //自定义消息的宏定义 #include "page1.h" #include "page2.h" #include "page3.h" ///////////////////////////////////////////////////////////////////////////// // CMainFrame IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd) BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) ON_COMMAND_EX(CG_ID_VIEW_DIALOGBAR, OnBarCheck) ON_UPDATE_COMMAND_UI(CG_ID_VIEW_DIALOGBAR, OnUpdateControlBarMenu) //{{AFX_MSG_MAP(CMainFrame) ON_WM_CREATE() ON_WM_CLOSE() ON_COMMAND(IDC_HELPTEXT, OnHelp) ON_COMMAND(IDC_EMAIL, OnEmail) ON_COMMAND(IDC_EXIT, OnExit) ON_COMMAND(IDC_APPWZD, OnAppWzd) ON_COMMAND(IDC_PRE, OnPre) ON_COMMAND(IDC_BACK, OnBack) ON_WM_SIZING() //}}AFX_MSG_MAP END_MESSAGE_MAP() static UINT indicators[] = { ID_SEPARATOR, // status line indicator ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, }; ///////////////////////////////////////////////////////////////////////////// // CMainFrame construction/destruction CMainFrame::CMainFrame() { // TODO: add member initialization code here // pView=CQQView::GetView(); } CMainFrame::~CMainFrame() { } int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; //创建扩展工具栏 if (!this->CreateExToolBar()) return -1; /************************************************************************/ /* 在工具栏上添加数字时钟 */ /************************************************************************/ if(!m_clock.Create("",WS_CHILD|WS_VISIBLE,CRect(0,0,135,40),this,IDC_CLOCK)) { return -1; } m_wndReBar.AddBar(&m_clock,NULL, NULL, RBBS_FIXEDSIZE | RBBS_FIXEDBMP); m_clock.SetStyle(CLEDClock::XDC_SECOND); /*--------------------------------------------------------------*/ if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; // fail to create } // TODO: Delete these three lines if you don't want the toolbar to // be dockable ////////////////////////////////////////////////////////////////////////// /* 创建任务栏图标 */ ////////////////////////////////////////////////////////////////////////// //加载系统托盘区程序组 if (!m_systemIcon.Create(this,//消息通知窗口 WM_ICON_NOTIFY,//自定义消息 "酒店管理系统2003", //提示字符串 AfxGetApp()->LoadIcon(IDR_MAINFRAME),//图标ID号 IDR_POPUP_MENU //弹出菜单ID号 )) { return -1; } if (!m_wndTabBar.Create(this, CSize(110, 100), WS_CHILD | WS_VISIBLE | CBRS_LEFT | CBRS_SIZE_DYNAMIC, AFX_IDW_TOOLBAR + 11)) { TRACE0("Failed to create cool bar\n"); return -1; // fail to create } if (!m_wndListBox1.Create(WS_CHILD | WS_VISIBLE, CRect(10, 10, 150, 300), &m_wndTabBar.m_wndTabCtrl, 0)) { TRACE0("Failed to create list bar\n"); return -1; // fail to create } m_wndTabBar.m_wndTabCtrl.SetMode(TABMODE_GROUP); m_wndTabBar.m_wndTabCtrl.AddPage(&m_wndListBox1, "管理", NULL); m_wndListBox1.AddItem(0, "客房登记",ID_ROOM_REGISTER, "客人住入酒店时进行客房登记"); m_wndListBox1.AddItem(1, "选房", ID_ROOM_CHOOSE, "给客人分配房间"); m_wndListBox1.AddItem(2, "房间预定",ID_ROOM_DESTINE, "为客人进行房间预定服务"); m_wndListBox1.AddItem(3, "餐饮点菜",ID_FOOD_ORDER, "管理客人的餐饮点菜"); m_wndListBox1.AddItem(4, "帐单付款",ID_MONEY_PAY, "支付某个帐单的费用"); m_wndListBox1.AddItem(5, "服务点单",ID_SERVER_ORDER, "服务点单"); m_wndListBox1.AddItem(6, "财务结帐",ID_MONEY_CHECKOUT, "客人离开时进行费用结算"); m_wndListBox1.SetImagelist(IDB_IMAGE); if (!m_wndListBox2.Create(WS_CHILD | WS_VISIBLE, CRect(10, 10, 200, 300), &m_wndTabBar.m_wndTabCtrl, 0)) { TRACE0("Failed to create list bar\n"); return -1; // fail to create } m_wndTabBar.m_wndTabCtrl.SetMode(TABMODE_GROUP); m_wndTabBar.m_wndTabCtrl.AddPage(&m_wndListBox2, "查询", NULL); m_wndListBox2.AddItem(0, "客人信息", ID_INFOLOOK_GUEST, "查看客人在酒店的情况"); m_wndListBox2.AddItem(1, "客房信息", ID_INFOLOOK_ROOM, "查看客房信息"); m_wndListBox2.AddItem(2, "帐单信息", ID_INFOLOOK_BILL, "查看帐单信息"); m_wndListBox2.AddItem(3, "服务项目", ID_INFOLOOK_SERVER, "查看酒店有哪些服务项目"); m_wndListBox2.AddItem(4, "食物信息", ID_INFOLOOK_FOOD, "查看酒店有哪些食物提供服务"); m_wndListBox2.AddItem(5, "员工信息", ID_INFOLOOK_EMPLOYER,"查看酒店的员工信息"); m_wndListBox2.AddItem(6, "消费情况", ID_INFOLOOK_CONSUME, "查看在酒店的消费情况"); m_wndListBox2.SetImagelist(IDB_IMAGE); ////////////////////////////////////////////////////////////////////////// /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ CoolMenu的安装 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ m_CoolMenu.Attach(GetMenu()->GetSafeHmenu());//菜单连接 CCoolMenu::SubClass(this->GetSafeHwnd());//子类化 CCoolMenu::SetLogoText("hello", RGB(0, 0, 255)); CCoolMenu::SetLogoImage(IDB_LOGOBAR2,0); CCoolMenu::SetBackGroundBmp(IDB_BKBMP); // CCoolMenuTheme::SetTheme(MENU_STYLE_XP); CCoolMenu::SetStyle(CCoolMenu::GetStyle() & ~CMS_ICONBAR); CCoolMenu::SetMenuColor(RGB(255,255,255));//菜单背景色 CCoolMenu::SetIconBarColor(::GetSysColor(COLOR_3DFACE)); CCoolMenu::SetLightBarColor(RGB(61, 128, 152));//高亮栏的边框的颜色 CCoolMenu::SetLightBarStartColor(RGB(255, 255, 255)); CCoolMenu::SetLightBarEndColor(RGB(77,109, 120)); CCoolMenu::SetTextColor(RGB(0, 0, 0)); CCoolMenu::SetHighLightColor(RGB(20, 20, 50)); CMenuWndHook::m_crFrame[0] = RGB(120, 120, 158); CMenuWndHook::m_crFrame[1] = RGB(48, 50, 48); CMenuWndHook::m_crFrame[2] = RGB(255, 255, 255); CMenuWndHook::m_crFrame[3] = RGB(168, 168, 210); /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ // TODO: Change the value of CG_ID_VIEW_DIALOGBAR to an appropriate value: // 1. Open the file resource.h // CG: The following block was inserted by the 'Dialog Bar' component { // Initialize dialog bar m_wndDialogBar//RIGHT if (!m_wndDialogBar.Create(this, CG_IDD_DIALOGBAR, CBRS_RIGHT| CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_HIDE_INPLACE, CG_ID_VIEW_DIALOGBAR)) { TRACE0("Failed to create dialog bar m_wndDialogBar\n"); return -1; // fail to create } m_wndDialogBar.EnableDocking(CBRS_ALIGN_RIGHT | CBRS_ALIGN_LEFT); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndDialogBar); } //Create our RollupCtrl into DialogBar4,4,187,362 m_wndRollupCtrl.Create(WS_VISIBLE|WS_CHILD, CRect(4,0,148,1000), &m_wndDialogBar, 2); //Add some pages //page1 m_wndRollupCtrl.InsertPage("高级查询",IDD_PAGE1,RUNTIME_CLASS(CPage1), 10); //page2 m_wndRollupCtrl.InsertPage("数据分析",IDD_PAGE2,RUNTIME_CLASS(CPage2)); //page3 m_wndRollupCtrl.InsertPage("酒店概况",IDD_PAGE3,RUNTIME_CLASS(CPage3)); ///// HICON m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME); return 0; } BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return TRUE; } ///////////////////////////////////////////////////////////////////////////// // CMainFrame diagnostics #ifdef _DEBUG void CMainFrame::AssertValid() const { CFrameWnd::AssertValid(); } void CMainFrame::Dump(CDumpContext& dc) const { CFrameWnd::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CMainFrame message handlers void CMainFrame::OnClose() { // TODO: Add your message handler code here and/or call default // new CFaderWnd(this,2000); // AfxGetMainWnd()->ShowWindow(SW_HIDE); CFrameWnd::OnClose(); } BOOL CMainFrame::CreateExToolBar() { CImageList img; CString str; if(!m_wndReBar.Create(this)) { return -1; } if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC)) { return -1; } //下面的代码是设置按钮的宽度和长度 m_wndToolBar.GetToolBarCtrl().SetButtonWidth(50,90); //下面的代码是设置"热"的位图 img.Create(25, 25, ILC_COLOR16|ILC_MASK,2,2); img.SetBkColor(::GetSysColor(COLOR_BTNFACE)); img.Add(AfxGetApp()->LoadIcon(IDI_WZD));//应用程序向导 img.Add(AfxGetApp()->LoadIcon(IDI_PRE));//前台程序 img.Add(AfxGetApp()->LoadIcon(IDI_BACK));//后台程序 img.Add(AfxGetApp()->LoadIcon(IDI_HELP));//帮助 img.Add(AfxGetApp()->LoadIcon(IDI_EMAIL));//邮件 img.Add(AfxGetApp()->LoadIcon(IDI_EXIT));//退出 m_wndToolBar.GetToolBarCtrl().SetHotImageList(&img); img.Detach(); //下面的代码是设置"冷"的位图 img.Create(23, 23, ILC_COLOR16|ILC_MASK, 2,2); img.SetBkColor(::GetSysColor(COLOR_BTNFACE)); img.Add(AfxGetApp()->LoadIcon(IDI_WZD));//应用程序向导 img.Add(AfxGetApp()->LoadIcon(IDI_PRE));//前台程序 img.Add(AfxGetApp()->LoadIcon(IDI_BACK));//后台程序 img.Add(AfxGetApp()->LoadIcon(IDI_HELP));//帮助 img.Add(AfxGetApp()->LoadIcon(IDI_EMAIL));//邮件 img.Add(AfxGetApp()->LoadIcon(IDI_EXIT));//退出 m_wndToolBar.GetToolBarCtrl().SetImageList(&img); img.Detach(); //改变属性 m_wndToolBar.ModifyStyle(0, TBSTYLE_FLAT |CBRS_TOOLTIPS | TBSTYLE_TRANSPARENT|TBBS_CHECKBOX ); m_wndToolBar.SetButtons(NULL,6); // set up each toolbar button设置文字 m_wndToolBar.SetButtonInfo(0, IDC_APPWZD, TBSTYLE_BUTTON, 0); m_wndToolBar.SetButtonText(0, "向导"); m_wndToolBar.SetButtonInfo(1, IDC_PRE, TBSTYLE_BUTTON, 1); m_wndToolBar.SetButtonText(1, "前台模式"); m_wndToolBar.SetButtonInfo(2, IDC_BACK, TBSTYLE_BUTTON, 2); m_wndToolBar.SetButtonText(2, "后台模式"); m_wndToolBar.SetButtonInfo(3, IDC_HELPTEXT, TBSTYLE_BUTTON, 3); m_wndToolBar.SetButtonText(3, "帮助"); m_wndToolBar.SetButtonInfo(4, IDC_EMAIL, TBSTYLE_BUTTON, 4); m_wndToolBar.SetButtonText(4, "邮件"); m_wndToolBar.SetButtonInfo(5, IDC_EXIT, TBSTYLE_BUTTON, 5); m_wndToolBar.SetButtonText(5,"退出"); CRect rectToolBar; //得到按钮的大小 m_wndToolBar.GetItemRect(0, &rectToolBar); //设置按钮的大小 m_wndToolBar.SetSizes(rectToolBar.Size(), CSize(20,23)); //在Rebar中加入ToolBar m_wndReBar.AddBar(&m_wndToolBar); //改变一些属性 REBARBANDINFO rbbi; rbbi.cbSize = sizeof(rbbi); //这个是必须填 rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE | RBBIM_SIZE|RBBIM_BACKGROUND; //工具条的宽度 rbbi.cxMinChild = rectToolBar.Width(); //高度 rbbi.cyMinChild = rectToolBar.Height(); //下面这行代码是为工具条加入背景位图,请注意上rbbi.fMask中RBBIM_BACKGROUND标志 rbbi.hbmBack = LoadBitmap(::AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_TOOLBARBKGND)); rbbi.cx = rbbi.cxIdeal = rectToolBar.Width() * 10; m_wndReBar.GetReBarCtrl().SetBandInfo(0, &rbbi); return TRUE; } void CMainFrame::OnAppWzd() { PlayResource(IDR_PRESSBTN); } void CMainFrame::OnPre() { PlayResource(IDR_PRESSBTN); } void CMainFrame::OnBack() { PlayResource(IDR_PRESSBTN); } void CMainFrame::OnHelp() { PlayResource(IDR_PRESSBTN); } void CMainFrame::OnEmail() { PlayResource(IDR_PRESSBTN); } void CMainFrame::OnExit() { PlayResource(IDR_PRESSBTN); CFrameWnd::OnClose(); } BOOL CMainFrame::PlayResource(WORD wResourceID) { // Get the handle to the current instance of the application HINSTANCE hInstance = AfxGetInstanceHandle(); ASSERT (hInstance != NULL); // Find the WAVE resource HRSRC hResInfo = FindResource(hInstance, MAKEINTRESOURCE(wResourceID), _T("WAVE")); if(hResInfo == NULL) return FALSE; // Load the WAVE resource HANDLE hRes = LoadResource(hInstance, hResInfo); if (hRes == NULL) return FALSE; // Lock the WAVE resource and play it LPSTR lpRes = (LPSTR) LockResource(hRes); if(lpRes==NULL) return FALSE; if (sndPlaySound(lpRes, SND_MEMORY | SND_ASYNC) == NULL) return FALSE; // Free the WAVE resource and return success or failure. FreeResource(hRes); return TRUE; } void CMainFrame::OnSizing(UINT fwSide, LPRECT pRect) {//改变框架的大小处理消息 CFrameWnd::OnSizing(fwSide, pRect); // TODO: Add your message handler code here CQQView* pView=CQQView::GetView(); RestorViewBmp();//改变大小时,视图区重画, //显示在视图区的图像也被擦除,应该恢复 if(pView->nImgTypeInView==12) { page3.bDrawTreeImage=TRUE; } if(pView->nImgTypeInView==13) { page3.bDrawFrameImage=TRUE; } if(pView->nImgTypeInView==0) { pView->bFirstRun=TRUE; } } void CMainFrame::RestorViewBmp() {//因为如窗口大小改变等原因引起视图区重画,恢复视图区先前显示的图像 CQQView* pView=CQQView::GetView(); pView->UpdateData(TRUE); CDC* pDC=pView->GetDC(); CRect rect; pView->GetClientRect(&rect); // pDC->FillSolidRect(rect,pDC->GetBkColor()); CBitmap* m_bitmap=CBitmap::FromHandle(pView->m_CurScreenBitmap); CDC MemDC; MemDC.CreateCompatibleDC(pDC); MemDC.SelectObject(m_bitmap); pDC->BitBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY); } void CMainFrame::DoDataExchange(CDataExchange* pDX) { // TODO: Add your specialized code here and/or call the base class DDX_Control(pDX, IDC_CLOCK, m_clock); CFrameWnd::DoDataExchange(pDX); }